const express = require('express');
const logger = require('morgan');

// 当使用 "express-jwt": "^7.7.0" 时需要采用解构赋值来获取 expressjwt 函数
const { expressjwt } = require('express-jwt');
// 导入 token 配置
const tokenConfig = require('./config/token');
// 导入后端路由
const userRouter = require('./routes/user');

const port = 3000;
const app = express();

// 启用日志中间件
app.use( logger('dev') );

// 处理请求体中 application/json 数据
app.use( express.json() );

// 处理请求体中 application/x-www-form-urlencoded 数据
app.use( express.urlencoded({ extended: false }) );

// 生成用于处理 Json Web Token 的中间件
const jwtMiddleware = expressjwt({ 
    secret: tokenConfig.secret , 
    algorithms: [ tokenConfig.algorithm ],
    credentialsRequired: false
}).unless({
    path: tokenConfig.unlessPaths
});

// 启用中间件
app.use( jwtMiddleware );

// 启用后端路由
app.use( userRouter );

app.listen( port , ()=>console.log(`后端服务正在监听${port}端口`) );